import BaseModel from './.model';
import { Table, Column, DataType, HasMany, Unique, BelongsToMany } from 'sequelize-typescript';
import AddressModel from './address.model';
import OrderModel from './order.model';
import RoleModel from './role.model';
import UserRoleModel from './user-role.model';

@Table({ tableName: 'users' })
export default class UserModel extends BaseModel {
  /** 用户头像的URL */
  @Column({ type: DataType.STRING, allowNull: true, comment: '用户头像的URL' })
  avatar?: string;

  /** 用户的电子邮件地址 */
  @Unique(true)
  @Column({ type: DataType.STRING, comment: '用户的电子邮件地址' })
  email!: string;

  /** 用户最后一次登录的时间 */
  @Column({ type: DataType.DATE, allowNull: true, comment: '用户最后一次登录的时间' })
  lastLoginTime?: Date;

  /** 用户的密码 */
  @Column({ type: DataType.STRING, comment: '用户的密码' })
  password!: string;

  /** 用户的手机号码 */
  @Column({ type: DataType.STRING, allowNull: true, comment: '用户的手机号码' })
  phone?: string;

  /** 用户的用户名 */
  @Column({ type: DataType.STRING, allowNull: true, comment: '用户的用户名' })
  username?: string;

  /** 用户的地址列表 */
  @HasMany(() => AddressModel)
  addresses?: AddressModel[];

  /** 用户的订单列表 */
  @HasMany(() => OrderModel)
  orders?: OrderModel[];

  /** 用户的角色列表 */
  @BelongsToMany(() => RoleModel, () => UserRoleModel)
  roles?: RoleModel[];
}
